﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using StuertzDatenbank.Properties;
using System.Net.NetworkInformation;
using System.Threading;

namespace StuertzDatenbank
{
    public partial class Serververbindungsgui : Form
    {
        private Sprachfile sprachfile; 

        public Serververbindungsgui()
        {
            sprachfile = new Sprachfile();

            InitializeComponent();
            InitializeComponentChange();
        }

        private void InitializeComponentChange()
        {
            this.Text = sprachfile.Einstellungen; 
            Verfuegbarlabel.Text = sprachfile.Verbunden;
            Verbindenbutton.Text = sprachfile.Speichern;

            Servernamelabel.Text = sprachfile.Server;
            Servertestbutton.Text = sprachfile.VerfuegbarkeitPrüfen;

            Daenbanklabel.Text = sprachfile.Datenbank;
            DBtestbutton.Text = sprachfile.VerfuegbarkeitPrüfen;

            Userlabel.Text = sprachfile.Benutzer;
            PWlabel.Text = sprachfile.Passwort;

            Serververfuegbarlabel.Text = sprachfile.Fragezeichen;
            dbverfuegbarlabel.Text = sprachfile.Fragezeichen;
            userverfuegbarlabel.Text = sprachfile.Fragezeichen;



            // Werte setzen
            ServertextBox.Text = Settings.Default.Server;
            DatenbanktextBox.Text = Settings.Default.Datenbank;
            USertextBox.Text = Settings.Default.User;
            PWTextBox.Text = Settings.Default.Passwort;

           
        }

        private void Servertestbutton_Click(object sender, EventArgs e)
        {
            
            Ping s = new Ping();
           
          
            InArbeitGui iAGui = new InArbeitGui();
            iAGui.Show();
            iAGui.BringToFront();
            iAGui.Refresh();
            {
                PingReply reply = s.Send(ServertextBox.Text);
                if (reply.Status == IPStatus.Success)
                {
                    Serververfuegbarlabel.Text = sprachfile.Online;
                   
                }
                else
                {
                    Serververfuegbarlabel.Text = sprachfile.Offline;
                   
                }
            }
            iAGui.Dispose();
        }

        private void DBtestbutton_Click(object sender, EventArgs e)
        {
            if (ServertextBox.Text==null||DatenbanktextBox.Text==null||USertextBox.Text==null||PWTextBox.Text==null)
            {
                return;
            }

            //Wir benutzen eine Common.DbConnection als Object und instanzieren dies als SqlConnection
            //Hier erfolgt die Definition, welche Datenbankverbindung wir nutzen, also ob Access,MySql,Sql, usw.
            //Anmerkung: Man könnte DbConnection auch mit der using-Direktive benutzen!
            System.Data.Common.DbConnection DbConnection = new System.Data.SqlClient.SqlConnection();
            System.Data.Common.DbCommand DbCommand = new System.Data.SqlClient.SqlCommand();
            DbCommand.Connection = DbConnection;
            System.Data.Common.DbConnectionStringBuilder DbConnectionStringBuilder = new System.Data.Common.DbConnectionStringBuilder();
            DbConnectionStringBuilder["Server"] = ServertextBox.Text;
            //Anwählen der Datenbank, diese kann später entweder über DbConnection.ChangeDatabase oder per Query geändert werden
            DbConnectionStringBuilder["Database"] = DatenbanktextBox.Text;
            DbConnectionStringBuilder["User ID"] = USertextBox.Text;
            DbConnectionStringBuilder["Password"] = PWTextBox.Text;
            DbConnectionStringBuilder["Persist Security Info"] = true;
            //Integrated Security, bedeutet, dass in diesem Fall die Windows-Authentifizierung genutzt wird
            //Ansonsten, werden die Parameter: "User ID" und "Password" zur Authentifizierung genutzt
            //DbConnectionStringBuilder["Integrated Security"] = "SSPI";
            //Nun übergeben wir den ConnectionString an die DbConnection
            DbConnection.ConnectionString = DbConnectionStringBuilder.ConnectionString;


            Ping s = new Ping();


            InArbeitGui iAGui = new InArbeitGui();
            iAGui.Show();
            iAGui.BringToFront();
            iAGui.Refresh();
            {
                PingReply reply = s.Send(ServertextBox.Text);
                if (reply.Status == IPStatus.Success)
                {
                    Serververfuegbarlabel.Text = sprachfile.Online;
                    try
                    {
                        //Öffnen der Verbindung
                        DbConnection.Open();
                        DbConnection.Close();
                        dbverfuegbarlabel.Text = sprachfile.Okay;
                        userverfuegbarlabel.Text = sprachfile.Okay;

                    }
                    catch (Exception)
                    {

                        dbverfuegbarlabel.Text = sprachfile.Offline;
                        userverfuegbarlabel.Text = sprachfile.Offline;
                    }

                }
                else
                {
                    Serververfuegbarlabel.Text = sprachfile.Offline;
                    dbverfuegbarlabel.Text = sprachfile.Offline;
                    userverfuegbarlabel.Text = sprachfile.Offline;

                }
            }
            iAGui.Dispose();
           
           



        }

        private void Usertestbutton_Click(object sender, EventArgs e)
        {

        }

        private void Verbindenbutton_Click(object sender, EventArgs e)
        {
            if (ServertextBox.Text == null || DatenbanktextBox.Text == null || USertextBox.Text == null || PWTextBox.Text == null)
            {
                return;
            }

            Settings.Default.Server = ServertextBox.Text;
            Settings.Default.Datenbank = DatenbanktextBox.Text;
            Settings.Default.User = USertextBox.Text;
            Settings.Default.Passwort = PWTextBox.Text;


            System.Data.Common.DbConnection DbConnection = new System.Data.SqlClient.SqlConnection();
            System.Data.Common.DbCommand DbCommand = new System.Data.SqlClient.SqlCommand();
            DbCommand.Connection = DbConnection;
            System.Data.Common.DbConnectionStringBuilder DbConnectionStringBuilder = new System.Data.Common.DbConnectionStringBuilder();
            DbConnectionStringBuilder["Server"] = ServertextBox.Text;
            //Anwählen der Datenbank, diese kann später entweder über DbConnection.ChangeDatabase oder per Query geändert werden
            DbConnectionStringBuilder["Database"] = DatenbanktextBox.Text;
            DbConnectionStringBuilder["User ID"] = USertextBox.Text;
            DbConnectionStringBuilder["Password"] = PWTextBox.Text;
            DbConnectionStringBuilder["Persist Security Info"] = true;
            //Integrated Security, bedeutet, dass in diesem Fall die Windows-Authentifizierung genutzt wird
            //Ansonsten, werden die Parameter: "User ID" und "Password" zur Authentifizierung genutzt
            //DbConnectionStringBuilder["Integrated Security"] = "SSPI";
            //Nun übergeben wir den ConnectionString an die DbConnection
            DbConnection.ConnectionString = DbConnectionStringBuilder.ConnectionString;

            Settings.Default.DBVerbindung = DbConnection.ConnectionString;




            Settings.Default.Save();
            Settings.Default.Reload();

            this.Dispose();
        }

       
    }
}
